﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;
using System.Data;
using System.Collections;

using XJX.DBCore;

namespace XJX.DataLayer
{
    public sealed class Evaluate : XJX.DBCore.DBObject
    {
        public Evaluate(string newConnectionString) : base(newConnectionString) { }

        public bool Add_New_Evaluate(string BID, string UID, string Econtent, int Egrade, out int ReturnValue, out string ReturnFieldValue)
        {
            int rowsAffected;//受影响的行数．

            SqlParameter[]
                parameters = {
                                 new SqlParameter("@bid",SqlDbType.VarChar,12),
                                 new SqlParameter("@uid",SqlDbType.UniqueIdentifier ),
                                 new SqlParameter("@econtent",SqlDbType.VarChar,4000 ),
                                 new SqlParameter("@egrade",SqlDbType.Int)
            };

            parameters[0].Value = BID;
            parameters[1].Value = new Guid(UID);
            parameters[2].Value = Econtent;
            parameters[3].Value = Egrade;

            try
            {
                ReturnValue = RunProcedure("Add_New_Evaluate", parameters, out rowsAffected, out ReturnFieldValue);
            }
            catch (SqlException e)
            {
                throw new System.Exception(e.Message);
            }
            return (rowsAffected == 1);//只利用了这一个返回的值，ReturnValue暂时未用。
        }


        //得到一本书的所有书评
        public DataSet Get_One_Book_Evaluate_From_BID(string BID, string TableName, int PageIndex, int PageSize, out int PageCount, out int TotalCount)
        {
            SqlParameter[]
                parameters = {
								 new SqlParameter("@BID", SqlDbType.VarChar,12),
								 new SqlParameter("@pageindex", SqlDbType.Int),
								 new SqlParameter("@pagesize", SqlDbType.Int)
							 };

            parameters[0].Value = BID;
            parameters[1].Value = PageIndex;
            parameters[2].Value = PageSize;

            using (DataSet ds = RunProcedure("Get_One_Book_Evaluate_From_BID", parameters, TableName, out PageCount, out TotalCount))
            {
                return ds;
            }
        }

        //屏敝一条书评
        public bool Shielding_One_Evaluate_From_EID(string EID)
        {
            int rowsAffected;

            SqlParameter[]
                parameters = {
								 new SqlParameter("@EID",SqlDbType.Int)
			};

            parameters[0].Value = EID;

            try
            {
                RunProcedure("Shielding_One_Evaluate_From_EID", parameters, out rowsAffected);
            }
            catch (SqlException e)
            {
                throw new System.Exception(e.Message);
            }
            return (rowsAffected == 1);
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        //添加内容评价
        public bool Ev_Add_New_Evaluate(
            string ItemName, 
            string ParentID, 
            string UID, 
            string Content, 
            out int ReturnValue, 
            out string ReturnFieldValue
            )
        {
            int rowsAffected;//

            SqlParameter[]
                parameters = {
                                 new SqlParameter("@ItemName",SqlDbType.VarChar,100),
                                 new SqlParameter("@ParentID",SqlDbType.Int),
                                 new SqlParameter("@UID",SqlDbType.UniqueIdentifier),
                                 new SqlParameter("@Content",SqlDbType.VarChar,-1)
                             };

            parameters[0].Value = ItemName;
            parameters[1].Value = ParentID;
            parameters[2].Value = new Guid(UID);
            parameters[3].Value = Content;

            try
            {
                ReturnValue = RunProcedure("Ev_Add_New_Evaluate", parameters, out rowsAffected, out ReturnFieldValue);
            }
            catch (SqlException e)
            {
                throw new System.Exception(e.Message);
            }
            return (rowsAffected == 1);//
        }

        //删除内容的一条评价记录
        public bool Ev_Del_One_ContentEvaluate_From_ID(string ID, string UID)
        {
            int rowsAffected;

            SqlParameter[]
                parameters = {
								 new SqlParameter("@ID",SqlDbType.Int),
                                 new SqlParameter("@UID",SqlDbType.UniqueIdentifier)
			};

            parameters[0].Value = ID;
            parameters[1].Value = new Guid(UID);

            try
            {
                RunProcedure("Ev_Del_One_ContentEvaluate_From_ID", parameters, out rowsAffected);
            }
            catch (SqlException e)
            {
                throw new System.Exception(e.Message);
            }
            return (rowsAffected == 1);
        }


        //添加点赞,或者去掉点赞
        public bool Ev_Add_New_Credit(string ItemName, string ParentID, string UID)
        {
            int rowsAffected;//

            SqlParameter[]
                parameters = {
                                 new SqlParameter("@ItemName",SqlDbType.VarChar,100),
                                 new SqlParameter("@ParentID",SqlDbType.Int),
                                 new SqlParameter("@UID",SqlDbType.UniqueIdentifier)
                             };

            parameters[0].Value = ItemName;
            parameters[1].Value = ParentID;
            parameters[2].Value = new Guid(UID);

            try
            {
                RunProcedure("Ev_Add_New_Credit", parameters,out rowsAffected);
            }
            catch (SqlException e)
            {
                throw new System.Exception(e.Message);
            }
            return (rowsAffected == 1);//
        }

        //一般用户或者管理员获取某主题回复内容列表
        public DataSet Ev_Search_ContentEvaluate_List
            (
            string ItemName,
            string ParentID,
            string IsAll,

            string TableName,

            int PageIndex,
            int PageSize,
            out int PageCount,
            out int TotalCount
            )
        {
            SqlParameter[]
                parameters = {
								 new SqlParameter("@ItemName", SqlDbType.VarChar,100),
								 new SqlParameter("@ParentID", SqlDbType.Int),
								 new SqlParameter("@IsAll", SqlDbType.VarChar,4),

								 new SqlParameter("@pageindex", SqlDbType.Int),
								 new SqlParameter("@pagesize", SqlDbType.Int)
							 };

            parameters[0].Value = ItemName;
            parameters[1].Value = ParentID;
            parameters[2].Value = IsAll;        //指示存储过程获取主题信息(part or all)
            parameters[3].Value = PageIndex;
            parameters[4].Value = PageSize;

            using (DataSet ds = RunProcedure("Ev_Search_ContentEvaluate_List", parameters, TableName, out PageCount, out TotalCount))
            {
                return ds;
            }
        }


        //某个家庭针对某主题发表的所有回复内容
        public DataSet Ev_Get_One_Family_ContentEvaluate_By_UID
            (
            string ItemName,
            string ParentID,
            string UID,

            string TableName,

            int PageIndex,
            int PageSize,
            out int PageCount,
            out int TotalCount
            )
        {
            SqlParameter[]
                parameters = {
								 new SqlParameter("@ItemName", SqlDbType.VarChar,100),
								 new SqlParameter("@ParentID", SqlDbType.Int),
								 new SqlParameter("@UID", SqlDbType.UniqueIdentifier),

								 new SqlParameter("@pageindex", SqlDbType.Int),
								 new SqlParameter("@pagesize", SqlDbType.Int)
							 };

            parameters[0].Value = ItemName;
            parameters[1].Value = ParentID;
            parameters[2].Value = new Guid(UID);
            parameters[3].Value = PageIndex;
            parameters[4].Value = PageSize;

            using (DataSet ds = RunProcedure("Ev_Search_ContentEvaluate_List", parameters, TableName, out PageCount, out TotalCount))
            {
                return ds;
            }
        }


    }
}
